home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / game / wb / Piggy.lha / Piggy next >
Text File  |  2001-05-14  |  14KB  |  382 lines

  1. /****************************************************************************/
  2. /*              Piggy Version 1.01 By Kevin R. Sherman                      */
  3. /*                                                                          */
  4. /* Corrected problem with computer roll routine. Would not quit when it had */
  5. /* computer would not quit when it had won the game.                        */
  6. /*                                                                          */
  7. /****************************************************************************/
  8.  
  9. IF ~SHOW(l,'rexxsupport.library') THEN CALL ADDLIB('rexxsupport.library',0,-30,0)
  10. CALL OPEN(OUT,'con:20/20/640/165/Piggy rexx by Kevin R. Sherman/nosize/plain',W)
  11. esc = x2c('1B')
  12. cls = x2c(1B63)
  13. LF = '0A'x
  14. quote.1 = "Come on, baby needs a new pair of shoes!"
  15. quote.2 = "And the dice say....."
  16. quote.3 = "One more time with fealing."
  17. quote.4 = "Hay, are these dice loaded!?!?!"
  18. quote.5 = "Ooooohhhhhh, I'm HOT tonight!"
  19. quote.6 = "Come on baby give be those boxcars!"
  20. quote.7 = "Gotta be cool now, gotta take care...."
  21. quote.8 = "Think positive thoughts. The dice are my friend. The dice are my..."
  22. quote.9 = "And there coming out of there shoot...."
  23. quote.10 = "Look out there hot stuff coming through...."
  24. quote.11 = "Please GOD give me a good roll and I'll never ask for anything again."
  25. quote.12 = "Rattle, rattle, rattle and the dice say...."
  26. quote.13 = "You sure your not cheating?"
  27. quote.14 = "Come on, come on... Looking for that hot streak!"
  28. quote.15 = "Like shooting fish in a pond."
  29. quote.16 = "Oooh, maybe I should't roll this time."
  30. quote.17 = "Fealing lucky punk? Well do you?!"
  31. quote.18 = "Is it hot in here or is it just the dice?"
  32. quote.19 = "What were the rules again?"
  33. quote.20 = "OK, just one more time."
  34.  
  35. MAIN:
  36.   CALL HEADER
  37.   CALL START
  38.   CALL FINISHED
  39.  
  40. FINISHED:
  41.   CALL CLOSE(OUT)
  42. EXIT
  43.  
  44. START:
  45.   CALL WRITECH(OUT,"Continue, quit, or help? Enter=C/h/q: "esc'[J')
  46.   CALL CLEARLN
  47.   SELECT
  48.     WHEN answer = "C" | answer =  "" THEN
  49.       DO
  50.         COMPUTERTOTAL = 0
  51.         USERTOTAL = 0
  52.         RANDOM(,, TIME(s))
  53.         beginer = RANDOM(1,2)
  54.         IF beginer = 1 THEN firstplayer = COMPUTER
  55.         ELSE firstplayer = USER
  56.         CALL WRITELN(OUT,"The" firstplayer "will go first this time.")
  57.         CALL DELAY(200)
  58.         player = firstplayer
  59.         DO FOREVER
  60.           IF player = "COMPUTER" THEN CALL computerroll
  61.           IF player = "USER" THEN  CALL userroll
  62.         END
  63.       END
  64.     WHEN answer = "H" THEN
  65.       DO
  66.         CALL SHOW_HELP
  67.         CALL MAIN
  68.       END
  69.     WHEN answer = "Q" THEN CALL FINISHED
  70.     OTHERWISE
  71.       DO
  72.         CALL WRITECH(OUT,esc'[1A')
  73.         CALL START
  74.       END
  75.   END
  76. RETURN
  77.  
  78. GAME_TOTAL:
  79.   CALL WRITELN(OUT,cls)
  80.   CALL WRITELN(OUT,"Game Totals: Computer:" COMPUTERTOTAL "      You:" USERTOTAL "    First player was" firstplayer||LF)
  81. RETURN
  82.  
  83. HEADER:
  84.   CALL WRITELN(OUT,cls)
  85.   CALL WRITELN(OUT,"                                Introducing")
  86.   CALL WRITELN(OUT,"                             PIGGY Version 1.01"LF)
  87.   CALL WRITELN(OUT,"                            by Kevin R. Sherman"LF)
  88.   CALL WRITELN(OUT,"                          Original game & concept")
  89.   CALL WRITELN(OUT,"                             by Basil Barnes"LF)
  90.   CALL WRITELN(OUT,"                       A very adictive game of dice."COPIES(LF,2))
  91. RETURN
  92.  
  93. CLEARLN:
  94.   DO TypeAhead = 0 to LINES(OUT) - 1
  95.     Junk = READLN(OUT)
  96.   END
  97.   answer = UPPER(READCH(OUT,1))
  98.   IF C2X(answer) = '0A' THEN answer = ''
  99. RETURN
  100.  
  101. COMPUTERROLL:
  102.   IF USERTOTAL >= 150 & firstplayer = "COMPUTER" THEN CALL GAME_END
  103.   IF COMPUTERTOTAL >= 150 & firstplayer = "USER" THEN CALL GAME_END
  104.   RollTotal = 0
  105.   DO RollNum = 1 TO RANDOM(2,10)
  106.     IF USERTOTAL < 150 THEN
  107.       DO
  108.         CALL SHOW_DICE
  109.         SELECT
  110.           WHEN roll = 2 THEN
  111.             DO
  112.               CALL WRITELN(OUT,"Drat!! I rolled snake eyes I start back at 0")
  113.               COMPUTERTOTAL = 0
  114.               player = user
  115.               CALL DELAY(200)
  116.               RETURN
  117.             END
  118.           WHEN dice.1 = 1 | dice.2 = 1 THEN
  119.             DO
  120.               CALL WRITELN(OUT,"I rolled a one. My turn is over.")
  121.               player = user
  122.               CALL DELAY(200)
  123.               RETURN
  124.             END
  125.           WHEN COMPUTERTOTAL + rolltotal > 150 & firstplayer = "USER" THEN
  126.             DO
  127.               COMPUTERTOTAL = COMPUTERTOTAL + rolltotal
  128.               CALL DELAY(200)
  129.               CALL GAME_END
  130.             END
  131.           OTHERWISE CALL DELAY(100)
  132.         END
  133.       END
  134.     ELSE
  135.       DO RollNum = 1
  136.         CALL SHOW_DICE
  137.         SELECT
  138.           WHEN roll = 2 THEN
  139.             DO
  140.               COMPUTERTOTAL = 0
  141.               CALL WRITELN(OUT,"Ahhhh!! I rolled snake eyes!! I lost big time. You lucky stiff.")
  142.               CALL DELAY(100)
  143.               CALL GAME_END
  144.             END
  145.           WHEN dice.1 = 1 | dice.2 = 1 THEN
  146.             DO
  147.               CALL WRITELN(OUT,"Not Now! Not a ONE! Ahhhhh. You beat me.")
  148.               CALL DELAY(100)
  149.               CALL GAME_END
  150.             END
  151.           WHEN COMPUTERTOTAL + rolltotal > USERTOTAL THEN
  152.             DO
  153.               COMPUTERTOTAL = COMPUTERTOTAL + rolltotal
  154.               CALL WRITELN(OUT,"Hehehehe. Your not piggy enough, I won!")
  155.               CALL DELAY(100)
  156.               CALL GAME_END
  157.             END
  158.           OTHERWISE CALL DELAY(100)
  159.         END
  160.       END
  161.   END
  162.   COMPUTERTOTAL = rolltotal + COMPUTERTOTAL
  163.   IF COMPUTERTOTAL >= 150 THEN
  164.     DO
  165.       CALL WRITELN(OUT,"OK, it's do or die time for you now!")
  166.       player = user
  167.       CALL DELAY(200)
  168.       RETURN
  169.     END
  170.   CALL WRITELN(OUT,"That's it for me this time.")
  171.   player = user
  172.   CALL DELAY(200)
  173. RETURN
  174.  
  175. USERROLL:
  176.   RollTotal = 0
  177.   CALL GAME_TOTAL
  178.   CALL WRITECH(OUT,"Would you like to roll the dice? Enter=Y/n/q: ")
  179.   DO RollNum = 1
  180.     CALL CLEARLN
  181.     SELECT
  182.       WHEN answer = "N" THEN
  183.         DO
  184.           USERTOTAL = rolltotal + USERTOTAL
  185.           SELECT
  186.             WHEN USERTOTAL >= 150 & firstplayer = "COMPUTER" THEN CALL GAME_END
  187.             WHEN COMPUTERTOTAL >= 150 THEN
  188.               DO
  189.                 IF COMPUTERTOTAL > USERTOTAL THEN CALL WRITELN(OUT,"Giving up are you? Good choice, sucker.")
  190.                 CALL DELAY(200)
  191.                 CALL GAME_END
  192.               END
  193.             WHEN USERTOTAL >= 150 THEN CALL WRITELN(OUT,"YIPES! It's do or die time now!")
  194.             OTHERWISE NOP
  195.           END
  196.           player = computer
  197.           CALL DELAY(200)
  198.           RETURN
  199.         END
  200.       WHEN answer = "Q" THEN
  201.         DO
  202.           CALL WRITELN(OUT,"Chicken, try and play again when you have more guts.")
  203.           CALL DELAY(300)
  204.           CALL FINISHED
  205.         END
  206.       WHEN answer = "Y" | answer = "" | C2X(answer) = '0A' THEN
  207.         DO
  208.           CALL SHOW_DICE
  209.           SELECT
  210.             WHEN roll = 2 THEN
  211.               DO
  212.                 CALL WRITELN(OUT,"Tough break, you rolled snake eyes you start back at 0")
  213.                 USERTOTAL = 0
  214.                 IF COMPUTERTOTAL > 150 THEN
  215.                   DO
  216.                     CALL WRITELN(OUT,"Hehehehe, that roll couldn't have come at a worse time.")
  217.                     CALL WRITELN(OUT,"Man I beat you bad! You shouldn't have been so PIGGY.")
  218.                     CALL DELAY(200)
  219.                     CALL GAME_END
  220.                   END
  221.                 player = computer
  222.                 CALL DELAY(200)
  223.                 RETURN
  224.               END
  225.             WHEN dice.1 = 1 | dice.2 = 1 THEN
  226.               DO
  227.                 IF COMPUTERTOTAL > 150 THEN
  228.                   DO
  229.                     CALL WRITELN(OUT,"Aaawwww, such bad luck. Well that is what you get for being so PIGGY.")
  230.                     CALL DELAY(200)
  231.                     CALL GAME_END
  232.                   END
  233.                 CALL WRITELN(OUT,"You rolled a one, my turn now.")
  234.                 player = computer
  235.                 CALL DELAY(200)
  236.                 RETURN
  237.               END
  238.             OTHERWISE NOP
  239.           END
  240.         END
  241.       WHEN RollNum < 2 THEN
  242.         DO
  243.           CALL WRITECH(OUT,esc'[1AWould you like to roll the dice? Enter=Y/n/q: 'esc'[J')
  244.           RollNum = 0
  245.           ITERATE RollNum
  246.         END
  247.       OTHERWISE
  248.         DO
  249.           CALL WRITECH(OUT,esc'[1AWant to roll again? Enter=Y/n/q: 'esc'[J')
  250.           RollNum = RollNum - 1
  251.           ITERATE RollNum
  252.         END
  253.     END
  254.     CALL WRITECH(OUT,"Want to roll again? Enter=Y/n/q: ")
  255.   END
  256. RETURN
  257.  
  258. SHOW_DICE:
  259.   CALL RANDOM(,, TIME(s))
  260.   dice.1 = RANDOM(1, 6)
  261.   dice.2 = RANDOM(1, 6)
  262.   roll = dice.1 + dice.2
  263.   rolltotal = roll + rolltotal
  264.   CALL GAME_TOTAL
  265.   RANDOM(,, TIME(s))
  266.   q = RANDOM(1,20)
  267.   CALL WRITELN(OUT,quote.q||LF)
  268.   dicepos1 = random(1,40,time(s))
  269.   dicepos2 = random(dicepos1 + 7,75,time(s))
  270.   CALL WRITELN(OUT,esc"[6;"dicepos1"H"esc"[42m     "esc"[6;"dicepos2"H     ")
  271.   CALL WRITELN(OUT,esc"[7;"dicepos1"H"esc"[42m     "esc"[7;"dicepos2"H     ")
  272.   CALL WRITELN(OUT,esc"[8;"dicepos1"H"esc"[42m     "esc"[8;"dicepos2"H     ")
  273.   SELECT
  274.     WHEN dice.1 = 1 THEN CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
  275.     WHEN dice.1 = 2 THEN
  276.       DO
  277.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*")
  278.         CALL WRITELN(OUT,esc"[8;"dicepos1 + 4"H*")
  279.       END
  280.     WHEN dice.1 = 3 THEN
  281.       DO
  282.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*")
  283.         CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
  284.         CALL WRITELN(OUT,esc"[8;"dicepos1 + 4"H*")
  285.       END
  286.     WHEN dice.1 = 4 THEN
  287.       DO
  288.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
  289.         CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
  290.       END
  291.     WHEN dice.1 = 5 THEN
  292.       DO
  293.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
  294.         CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
  295.         CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
  296.       END
  297.     WHEN dice.1 = 6 THEN
  298.       DO
  299.         CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
  300.         CALL WRITELN(OUT,esc"[7;"dicepos1"H*"esc"[7;"dicepos1 + 4"H*")
  301.         CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
  302.       END
  303.   END
  304.   SELECT
  305.     WHEN dice.2 = 1 THEN CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
  306.     WHEN dice.2 = 2 THEN
  307.       DO
  308.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*")
  309.         CALL WRITELN(OUT,esc"[8;"dicepos2 + 4"H*")
  310.       END
  311.     WHEN dice.2 = 3 THEN
  312.       DO
  313.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*")
  314.         CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
  315.         CALL WRITELN(OUT,esc"[8;"dicepos2 + 4"H*")
  316.       END
  317.     WHEN dice.2 = 4 THEN
  318.       DO
  319.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
  320.         CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
  321.       END
  322.     WHEN dice.2 = 5 THEN
  323.       DO
  324.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
  325.         CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
  326.         CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
  327.       END
  328.     WHEN dice.2 = 6 THEN
  329.       DO
  330.         CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
  331.         CALL WRITELN(OUT,esc"[7;"dicepos2"H*"esc"[7;"dicepos2 + 4"H*")
  332.         CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
  333.       END
  334.   END
  335.   CALL WRITELN(OUT,esc"[0m")
  336.   IF dice.1 = 1 | dice.2 = 1 THEN rolltotal = 0
  337.   IF Player = "COMPUTER" THEN
  338.   CALL WRITELN(OUT,esc"[10;1HOn roll number" RollNum "the dice came up as:" dice.1 'AND' dice.2 "Current total:" COMPUTERTOTAL + rolltotal)
  339.   ELSE
  340.   CALL WRITELN(OUT,esc"[10;1HOn roll number" RollNum "the dice came up as:" dice.1 'AND' dice.2 "Current total:" USERTOTAL + rolltotal)
  341. RETURN
  342.  
  343. GAME_END:
  344.   CALL GAME_TOTAL
  345.   CALL WRITELN(OUT,"                 We have a winner... and the winner is...."LF)
  346.     CALL DELAY(100)
  347.   IF COMPUTERTOTAL > USERTOTAL THEN
  348.     DO
  349.       CALL WRITELN(OUT,"                             THE COMPUTER!!!!")
  350.       CALL WRITELN(OUT,"Better luck next time.")
  351.     END
  352.   ELSE
  353.     DO
  354.       CALL WRITELN(OUT,"                                   YOU!!!!")
  355.       CALL WRITELN(OUT,"                               Job well done.")
  356.   END
  357.   CALL WRITECH(OUT,COPIES(LF,2)'Want to play again? Enter=Y: 'esc'[J')
  358.   CALL CLEARLN
  359.   IF answer = 'Y' | answer = '' THEN CALL MAIN
  360.   CALL FINISHED
  361. RETURN
  362.  
  363. SHOW_HELP:
  364.   CALL WRITELN(OUT,cls)
  365.   CALL WRITELN(OUT,"The object of the game is to have the highest points at the end of the game.")
  366.   CALL WRITELN(OUT,"The  game  is  played  to  150 points.  Selection of first player is random.")
  367.   CALL WRITELN(OUT,"However the second player always has the last roll."LF)
  368.   CALL WRITELN(OUT,"Points  are  accumulated  by  adding the players current roll total to their")
  369.   CALL WRITELN(OUT,"accumulated  total.  During play if a one is rolled on EITHER dice then that")
  370.   CALL WRITELN(OUT,"player  loses  their  turn  and all points that were accumulated during that")
  371.   CALL WRITELN(OUT,"turn.   If  BOTH  dice are one then the player not only loses their turn and")
  372.   CALL WRITELN(OUT,"all  accumulated points in that turn, but also loses their total accumulated")
  373.   CALL WRITELN(OUT,"points.  (If you roll snake eyes you start over.)"LF)
  374.   CALL WRITELN(OUT,"Once  a  player  has reached 150 points or more and stops rolling the winner")
  375.   CALL WRITELN(OUT,"will be determined after the second player finishes their roll.  If quitting")
  376.   CALL WRITELN(OUT,"player  was  the  second  player  then  a  winner is immediately determined.")
  377.   CALL WRITELN(OUT,"Otherwise  the  second player has one more roll then a winner is determined.")
  378.   CALL WRITELN(OUT,"If you quit the game before you reach 150 you forfeit."LF)
  379.   CALL WRITECH(OUT,"Enter to continue.")
  380.   CALL CLEARLN
  381. RETURN
  382.